#ifndef _H_GATHER_DATA_HANDLER_M
#define _H_GATHER_DATA_HANDLER_M

#include "FreeRTOS.h"  // FreeRTOS核心功能
#include "heart_task.h" // 心跳任务依赖

/**
 *  原始采集数据结构
 * 
 * 存储从传感器直接读取的原始数据：
 * - 未经处理的传感器原始值
 * - 用于数据清洗和处理
 */
typedef struct GatherData {
    u8 temp;        // 原始温度值（单位：℃）
    u8 humi;        // 原始湿度值（单位：%）
    u16 smoke;      // 烟雾传感器原始ADC值（0-4095）
    u16 sunshine;   // 光照传感器原始ADC值（0-4095）
    u8 raidrop;     // 雨水检测状态（0=有雨水，1=无雨水）
} GatherData;

/**
 *  处理后的目标数据结构
 * 
 * 存储经过清洗和处理的最终数据：
 * - 已校准和格式化的传感器数据
 * - 供其他模块使用的最终数据
 */
typedef struct TargetGatherData {
    u8 temp;        // 处理后的温度值（单位：℃）
    u8 humi;        // 处理后的湿度值（单位：%）
    u16 smoke;      // 处理后的烟雾浓度值（百分比）
    u16 sunshine;   // 处理后的光照强度值（百分比）
    u8 raidrop;     // 雨水检测状态（0=有雨水，1=无雨水）
} TargetGatherData;

/**
 *  数据处理器主函数
 * 
 * 对原始采集数据进行处理：
 * 1. 数据清洗（有效性检查）
 * 2. 数据转换（原始值→可读值）
 * 3. 异常检测（传感器故障判断）
 * 
 * @param source 指向原始采集数据的指针
 */
void dataHandler(GatherData *source);

#endif